/*
	File:		EntityController_Human.h
	Author:		dmonroe
	Date:		1/12/2012
	Copyright:	Full Sail University

	Purpose:	Human controller for generic CEntity objects
*/

#ifndef ENTITYCONTROLLER_HUMAN_H
#define ENTITYCONTROLLER_HUMAN_H

#include "../source/EntityController.h"
#include "../source/EntityController_Actions.h"

// ALL controllers should derive from CEntityController!
class CEntityController_Human : public CEntityController
{
public:
	CEntityController_Human( void );
	virtual ~CEntityController_Human( void );
	
	// CEntityController Interface:
	virtual bool	Update				( const CEntity* pEntity, float fElapsedTime );
	virtual bool	ShouldPerform		( const CEntity* pEntity );
	virtual float	ShouldPerformAction	( const CEntity* pEntity, unsigned long ulActionID );

	// ACTIONS
	void	BindAction( EEntityAction nAction, int nButton );		// NOT VIRTUAL!

private:
	int		m_nKeys[ 4 ];				// keybinding for actions
	float	m_fActions[ 4 ];			// current state of actions
	bool	m_bPerformAction;			// is any action waiting to perform?
};

#endif //ENTITYCONTROLLER_HUMAN_H
